<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>

        table {
            border-collapse: collapse;
        }

    </style>
</head>
<body>

<!--
js需要引入到html中;
内部引入：
先编写一个script标签，在标签内中写js代码。
外部引入：
先编写js文件，用script标签引入。

注意：
一个html中可以有多个script标签，从上到下执行。
一个script标签要么写js代码，要么引入js文件，不能同时设置。
在html中如果标签没有包含内容，可以写成单标签。但script标签不能写成单标签



三种输出方式：
1.直接输出：如 document.write("hello")；（不常用）
2.控制台打印：console。log("hello2");（测试时常用）
3.弹窗：alert("今天休息")：（按需使用）


js的变量声明：
js是弱类型语言。有类型但不强调，声明变量时候无需强调类型。java是强类型语言。
声明：
    1:es5:无论什么类型的变量都是var。
    2:es6:变量用let，常量用const
    var有变量作用域泄露的问题，尽量用es6。



js的类型：
    1：原始类型：
        1：number  整数小数都是number
        2：string   单双引号不做区分
        3：boolean   true/false
        4：null      空
        5：undefined 未定义：如 let a；  （只声明没有赋值）
    2：复杂类型
        1：对象：
            （json对象—
        2：函数
    3：运算符：
        变量类型 = typeof 变量


-->

<script>
    document.write("hell0")
    console.log("hello2");
    // alert("今天休息")


    {
        var a = 1;
        let a1 = 2;
        const b = 3;
    }
    console.log(a);//看似e在此定义，实则被提升到了全局
    // console.log(a1);//这里获取不到

    let x = 4.1;
    let type = typeof x;
    console.log(type);

    let n = null;
    console.log(n);
    let type1 = typeof n;
    console.log(type1);

    let f;
    console.log(f);
    let type2 = typeof f;
    console.log(type2);

    let json = {
        name: "aa",
        age: 12,
        marryed: false

    }
    for (let i in json) {
        console.log(i + ":" + json[i]);
    }

    console.log(json);

    let array = ["a", 'b', 'c'];
    for (let ele of array) {
        console.log(ele);
    }
    for (let i = 0; i < array.length; i++) {
        console.log(i + ": " + array[i]);
    }

    for (let index in array) {
        console.log(index);
        console.log(array[index]);
    }


    //九九乘法表
    document.write("<table border=\"1px\" cellspacing='0px' cellpadding='5px'>");

    for (let i = 0; i <= 9; i++) {
        document.write("<tr>")
        for (let j = 1; j <= i; j++) {
            document.write("<td>")
            let str = i + "x" + i + "=" + (i * j)
            document.write(str)
            document.write("</td>")
        }
        document.write("</tr>")
    }
    document.write("</table>")


    //函数：（就是java中的方法。)
    //参数列表只需要写变量名即可，不需要声明关键字。
    //函数内有一个默认的变量arguments，是一个数组，接收了了函数调用时候传入的所有参数。

    function f1() {
        console.log("hello");
    }

    function f2(a, b) {
        console.log(a + b);
    }

    function f3(a, b) {
        return a + b;
    }

    function f4() {
        let num = arguments[0] + 1;
        return num;
    }

    f1();
    f2(1, 3);
    console.log(f3(3, 6));
    console.log(f3(3, 54, 3));//给的参数
    console.log(f4(32));


    //js函数有两种写法
    //普通函数：
    //    function f1(....){
    //     }
    //匿名函数：
    //函数没有名字，不过必须要给一个变量赋值
    let fun5 = function () {
        console.log("匿名函数");
    }
    fun5();

    let obj = {
        name: "名字",
        show: function () {
            console.log("匿名函数2")
        }
    }
    console.log(obj.name);
    obj.show();






</script>
<script src="../js/my.js"/>

<table border=\"1px\" cellspacing="0" cellpadding="5px">

</table>


</body>
</html>